課程資訊
課程名稱
計算機程式設計
Computer Programming 
開課學期
107-2 
授課對象
 
授課教師
鄭士康 
課號
EE3029 
課程識別碼
901 33900 
班次
 
學分
4.0 
全/半年
半年 
必/選修
 
上課時間
星期五7,8,9,10(14:20~18:20) 
上課地點
博雅301 
備註
A6:量化分析與數學素養
總人數上限:100人 
Ceiba 課程網頁
http://ceiba.ntu.edu.tw/1072EE3029_ 
課程簡介影片
 
核心能力關聯
核心能力與課程規劃關聯圖
課程大綱
為確保您我的權利,請尊重智慧財產權及不得非法影印
課程概述

注意: 本課程須投入甚多時間撰寫程式與報告, 課程負擔由輕而重, 至期末時達最高峰, 課業繁重或無決心毅力之同學請慎重考慮.

注意: 本課程鼓勵同學自組1至3人之團隊, 合作完成期末專題程式, 且各團隊期末專題程式成績即各成員共同之期末專題程式成績,占學期成績之30%. 因此務必慎選夥伴,若有重大合作困難,請及早反應處理.

注意: 除非考卷或作業批改登記發生錯誤,絕不更改成績.

注意: 本校另外開有基本能力課程「數位應用程式設計」, 內容涵括網路程式設計, 網路數據分析, 資料視覺化等, 該課程充分應用高階軟體工具, 較易學習, 而本課程較重視基礎程式語言邏輯之訓練, 並未將網路程式設計納入, 因此兩門課程彼此互補, 同學可以依需求選修.

注意: 本學期另有兩門通識電腦程式設計課程, 分別為二學分及三學分, 內容與要求與本課程不同, 同學可以參考比較.

注意: 本課程使用跨平台(Windows x64, MacOS, Linux x64)程式整合開發環境Visual Studio Code, 請由官網 https://code.visualstudio.com/下載安裝. 另外據助教提供經驗: 用平板來進行程式設計時, 須將鍵盤呈現在螢幕上. 想看螢幕畫面就得犧牲打字的便利性, 想打得順就看不到螢幕, 這是平板電腦先天的限制. 如忽略這些障礙, 可在另一電腦安裝Visual Studio Code, 用TeamViewer遠端操控.

課程緣起:
進入資訊科技時代,電腦程式設計已可說是未來「數位公民」應有的基本學養. 賈伯斯早在1995年就主張: "所有美國人都應該學程式,學習一門程式語言,學程式教你如何思考,就像學法律一樣。並不是要大家都去學法律,但法律教你一種思考方式,而程式帶給你另外一種思考方式。我認為電腦科學應該作為基本教育,每個人都應該花一年時間學習它"(http://www.inside.com.tw/2013/05/08/steve-jobs-the-lost-interview)。國外知名大學多已對非理工科系開設相關課程, 因此台大開始推動普及電腦程式設計課程, 作為「深碗」通識課程之一部份. 除提高修課人數上限, 同時增添助教人力, 要求確實實作, 增強同學們在資訊時代的競爭力。

課程簡介:
以主要程式語言之一的C#為例, 由基本觀念循序漸近, 介紹計算機程式的語法與程式設計撰寫要領. Part I 前半適合初學者. Part II引入物件觀念後, 則程度較好同學亦能有所收獲.修完本課程後, 即有能力學習其他各種計算機程式語言之程式設計, 或學習使用特定軟體工具開發包括網路應用及手機APP等實用程式.

課程主要內容分章如下:

1.教學計畫及C#簡介
Part I. 函式
2.整合發展環境初步與簡易C#程式
3.實值變數與運算式
4.流程控制
5.陣列
6.函式
7.程式規劃與函式導向程式設計 (函式導向指分解工作為階層結構之多個函式, 並非計算機科學所稱之Functional Programming)

Part II. 物件
8.物件與類別
9.物件導向程式設計
10.繼承與多型
11.檔案讀寫與例外處理
12.Unity 圖形使用介面程式設計


上課方式:

請同學自備筆記型電腦上課. 課堂上Power Point教學, 程式示範, 及習作交替進行. 課堂習作時由助教群解答同學問題.課程剛開始幾週內, 課堂實作時同學可以另開資料夾, 逐行鍵入及執行剛教的例題程式,並嘗試各種變化. 隨著例題程式逐漸複雜, 同學可以直接打開教材所附檔案夾,找到對應的例題程式專案,閱讀程式碼,以偵錯器逐步執行較不明瞭部分,或者改變若干程式敘述, 觀察執行結果如何改變. 學習較快同學可以在課堂實作時間, 自習尚未教到的部分, 或嘗試撰寫自己構想的題目. 原則上任課教師及助教群只回答已教過的內容問題, 牽涉到尚未教課程的問題, 則只回答將在何處教到,由同學自學並嘗試解決. 任課教師亦可能出一道題, 請同學在課堂實作時間內完成. 每一段課堂實作結束時, 任課教師可能隨機指定某位同學向全班解說其構想及所完成之程式, 並予講評.

本課程106-2學期上課錄影放置於台灣通識網
網址: http://get.aca.ntu.edu.tw/getcdb/
同學可用以預習及複習. 然而本學期課程因應
所用程式開發環境的改變(由Visual Studio 2017改為 Visual Studio Code), 除第12章
圖形使用介面設計內容全部換新之外, 第1, 2章的講解相當不同, 其他各章也有些小差異.
敬請同學留意.

同時請注意期中考後, 內容難度開始增加, 講解時間增多, 課堂習作演練時間減少, 同學課外需要花更多時間實作, 預習及複習, 才可能學好. 如果有幾週沒能好好聽課及實作複習, 很容易跟不上.

原則上助教群每週會出一不計分題目供同學練習, 完成之解答程式專案可壓縮後由CEIBA上傳. 助教群在下一週講解, 並釐清更正同學解答中共通性之錯誤.

上課後, 修課或旁聽同學自行完成教科書中每章後之練習以加深學習效果, 可參考教材中對應的解答. 有關問題亦可請教助教.

助教群除每週五最後一節課(17:30~18:20), 在任課教師指導下, 協助學生實作當天授課內容相關課題, 並幫忙同學解決各種問題外, 助教群也將在臉書開設社團, 同學們學習的過程遇到的困難、或學習心得,都可以課外在社團發表, 並與助教們討論.

歷年本課程網址
https://ceiba.ntu.edu.tw/1062EE3029_
https://ceiba.ntu.edu.tw/1042EE4052_
https://ceiba.ntu.edu.tw/1032EE4052_
https://ceiba.ntu.edu.tw/1022EE4052_
http://cc.ee.ntu.edu.tw/~skjeng/ComputerProgramming2012Spring.htm
http://cc.ee.ntu.edu.tw/~skjeng/ComputerProgramming2011Spring.htm
http://cc.ee.ntu.edu.tw/~skjeng/ComputerProgramming2010Spring.htm
http://cc.ee.ntu.edu.tw/~skjeng/ComputerProgramming2009Spring.htm
http://cc.ee.ntu.edu.tw/~skjeng/ComputerProgramming2008Spring.htm
http://cc.ee.ntu.edu.tw/~skjeng/ComputerProgramming2007Spring.htm 

課程目標
訓練學生能夠利用C#語言寫作計算機程式, 並從中學習資訊時代解決問題的新方法. 包括問題辨識定義, 解法規畫, 邏輯表示與偵錯, 及過程與結果呈現之表達等能力. 願意組隊完成期末專題程式開發之同學, 另可獲得軟體系統發展分工整合及團隊合作的經驗. 
課程要求
1. 先修課程:無

2. 學期成績計算方式:

三次作業 30% + 期中考 20% + 期末考 20% + 期末專題程式成果之臉書社團網站展演短片 15% + 期末專題程式書面報告 15%

助教群可依同學與助教之互動表現(課內外討論, 每週所出不計分之練習題解完題數及解答品質等)酌加總分最多1.5分.
學期成績小數點以下無條件進位之後, 依學校規定方式由百分制轉為等第.

3. 作業
各次作業繳交日前,每位修課同學需自行依興趣選擇一個主題,撰寫程式及報告當成計分之作業,內容亦可配合期末專題,作為其先期嘗試或構成其一部份. 交來之作業須以書面介紹選擇題目之動機,構想解說,程式測試規畫, 流程圖(第4章介紹), 結構圖(第6, 7章介紹)或UML圖(第9章介紹), 程式列表, 程式測試執行結果,參考文獻, 學習心得等. 此外並需於規定時間內上傳口頭報告投影片至CEIBA網站.
同學若自修或向學長或助教學得超過課程進度之內容,並應用於自行實作完成之作業, 需敘明自修或討論學習過程於學習心得部份. 作業亦可利用其他既有之相關開放使用程式碼或無版權之軟體工具及網路上可公用之數據, 影音, 圖片等資料, 直接或修改後採用, 以完成同學構想之主題, 但需註明出處及修改應用之處, 且如此產生之程式碼部份在程式列表中應予省略.
作業每次每人繳交一份, 不可多人合交. 如為多人合作, 亦須分開撰寫不同內容.

4. 期末專題程式:
課程進行中, 修課同學(不包含旁聽學生)自組1至3人之團隊, 於規定日期由CEIBA上傳一頁之期末專題程式構想(不計分), 說明預定主題與選擇此一主題之動機, 及可能之實作方法. 團隊應盡早開始持續合作, 完成期末專題程式實作.每一團隊需以學術論文格式寫成一份書面報告, 比照正式學術報告格式撰寫, 包含摘要(Abstract), 本文(至少須涵括研究動機, 相關之課程章節, 文獻回顧, 理論說明, 實作流程架構, 研究過程, 實作結果與討論, 結論, 並適當註明引用文獻及他人指導內容), 參考文獻(References), 與學習心得等內容. 並需於規定期限內上傳成果解說展演視訊短片至YouTube網站.
專題程式實作可與學長或助教討論, 但必須由團隊本身完成.
亦可利用其他既有之相關開放使用程式碼或無版權之軟體工具及網路上可公用之數據, 影音, 圖片等資料,直接或修改後採用, 以完成團隊構想之主題, 但需於書面報告及投影片註明何處由何人協助完成,及修改或直接應用既有資源之部分與其出處.
團隊之期末專題解說展演視訊短片及書面報告成績均即為各團隊成員之期末專題程式展演與書面報告成績.

5. 評分為A+的作業將會公布於CEIBA網站, 供所有同學參考. 因此學習心得可
以另外撰寫, 其pdf檔與口頭報告及書面報告/作業檔案壓縮檔分開成兩個檔於ceiba分別繳交. 
預期每週課後學習時數
 
Office Hours
另約時間 
指定閱讀
1. 鄭士康, 以C#學習程式設計基礎:使用Visual Studio 2012 Express for Windows Desktop, 2013. (電子書, 與各章例題,練習題解答,及期中期末複習解答等構成完整講義, 共同壓縮成一個zip檔, Tutorial2016, NTU Space網址https://www.space.ntu.edu.tw/navigate/s/FBACCD53E0CE444CA0F803B0CC8F3E0AQQY ), 請同學自行下載.
有需要於上課及期中期末Open Book考試時參考紙本者, 加退選後及期中考後, 分上冊(即1~7章, 290頁), 與下冊( 8~13章, 478頁), 參加助教群揪團, 以印量取得較多折扣. 上述教科書雖是介紹Visual Studio 2012 Express for Windows Desk Top, 但基礎概念及內容仍可應用於本課程採用之Visual Studio Code.

2. 各章教學資料分基本教材(講義內容投影片, 上課時盡量依進度仔細講解), 補充教材(主要由同學課外學習, 上課時可能略作提示), 延伸學習教材(課外自修)三部分, 整合為一個XMind心智圖.xmind檔. 可於上課前由任課教師email通知之NTU Space網址下載. 同學請至https://actsmind.com/blog/ 下載安裝免費軟體XMind, 可開啟.xmind檔. 直接滑鼠雙按圖中的各種檔案圖標, 即可開啟各種教材檔案.  
參考書目
網路上適合各種程度之各種學習資源及市售C#入門及其他相關書籍均可參考. 
評量方式
(僅供參考)
 
No.
項目
百分比
說明
1. 
三次作業 
30% 
作業每次由助教群輪一位助教批改, 任課教師抽驗. 每次作業佔學期成績10%. 評分要點為主題之創新性, 構想及動機之說明及相關圖形是否清楚,程式測試規畫是否完整. 使用外部資源之外, 個人獨力完成的程式部份是否切題有創意, 註解是否清楚適當,程式是否簡潔易讀, 學習心得是否言之有物等. 具體評分標準由助教自訂. 作業以 A+ = 97, A = 92, A- = 87, B+ = 82, B = 77, B- = 72等評分, 缺交為0分,遲交依規定扣分. 作業及學習心得須轉成pdf檔.另準備由同樣內容整理,含標題頁之7張左右投影片ppt或pdf檔, 於作業繳交日上課前由CEIBA系統作業區分別上傳繳交. 作業繳交日第三節,輪流抽籤決定同學以其準備之投影片進行簡報.亦歡迎旁聽同學繳交書面及投影片作業,並參加抽籤簡報. 作業討論抽到的修課同學若未事先請假, 又不在教室內, 作業成績先九五折, 隨後由抽到之時間至該同學出現或下課, 每十分鐘將該份作業成績乘以0.95一次. 作業遲交時,成績先打九折,隨後自預定繳交日第一節開始上課時間算起,每逾一日(24小時),該次作業成績乘以0.85一次. 若因另有要事無法出席作業討論者, 仍須於作業討論日上課第一節前上傳作業檔案. 並須與授課老師商量, 於適當時間進行作業簡報. 上傳的作業應包含 (1) 書面報告pdf檔, (2) 口頭簡報PowerPoint檔, (3)學習心得報告pdf檔, 分開於CEIBA作業區上傳. 
2. 
期中考 
20% 
4月19日原上課時間在原教室舉行,時間為下午2:20至6:00,範圍為第一章至前一週進度. 考試為Open Book, 同學可攜帶任何紙本資料, 但不可攜帶使用各式電腦(Computer)或計算器(Calculator), 亦不能借閱他人所攜資料. 考試進行中禁止使用手機. 因不可抗力之原因無法應考者, 請盡早於考試前通知任課老師商討變通方 法. 考試舉行過後, 方告知缺考原因者, 除確屬不可抗力原因並附證明者 可與任課老師商量變通方法外, 考試成績以零分計算. 考試由任課教師命題, 與助教群共同監考, 各助教依任課教師提供之參考解答, 亂數決定批改之題號(例如助教A改第3題, 助教B改第1, 2題, …). 
3. 
期末考 
20% 
6月21日原上課日在原教室舉行,時間為下午2:20至6:00,範圍為期中考 所考範圍之後的部分. 考試為Open Book, 同學可攜帶任何紙本資料, 但不可攜帶使用各式電腦(Computer)或計算器(Calculator), 亦不能借閱他人所攜資料. 考試進行中禁止使用手機. 因不可抗力之原因無法應考者, 請盡早於考試前通知任課老師商討變通方法. 考試舉行過後, 方告知缺考原因者, 除確屬不可抗力之原因無法應考並附證明者可與任課老師商量變通方法外, 考試成績以零分計算. 考試由任課教師命題, 與助教群共同監考, 各助教依任課教師提供之參考解答, 亂數決定批改之題號(例如助教A改第3題, 助教B改第1, 2題, …) 
4. 
期末專題實作展演視訊短片 
15% 
各團隊應完成期末專題實作, 並製作5分鐘左右解說展演視訊短片, 於6月22日0時至6月27日14時之間上傳至YouTube網站. 並在CEIBA網站作業區上傳YouTube網址(pdf檔). 同學互相就YouTube上的視訊短片評分. 展演視訊短片的同儕互評, 全部透過網路進行. 課程並沒有安排一個大家聚在一起簡報打分數的時間. 所以屆時不在台北的同學, 期末專題的互評成績不受影響. 每位修課同學為其他團隊短片評分時, 以1至5分評分,並鼓勵註 記優缺點.自己團隊之作品則應予迴避不評分. 所評分數1至5分各分數所 占人數應照屆時宣佈之規定比例分配, 不可全部打相同或均打少數特定分 數. 各團隊之展演成績為其他同學評分截頭去尾後平均(x),換算得分為 70+5x, 未如期推出短片之團隊除有特殊原因外, 以0分計算. 若確因不可抗力原因致無法完成短片之團隊, 須附證明, 並於6月28日當晚12:00前以email通知任課老師, 安排適當時間向任課老師簡報, 並由任課教師評分. 如仍無法簡報者, 由團隊與任課老師商討變通方法. 
5. 
期末專題實作書面報告 
15% 
6月28日下午2:00前, 將書面報告及學習心得分別轉成pdf檔, 由CEIBA系統作業區分開繳交. 書面報告由任課老師主觀依照書面報告之整體表現, 以 A+ = 97, A = 92, A- = 87, B+ = 82, B = 77, B- = 72 等評分, 缺交為0分. 不論原因, 遲交者成績打八折,於7月1日14:00後不再收補交之報告,該項成績為零分. 
6. 
助教評分  
1.5% 
助教依照平常互動情況給分 
 
課程進度
週次
日期
單元主題
第1週
2/22  第1,2章: 課程背景及學習指引, 整合發展環境初步與簡易C#程式 
第2週
3/01  調整放假. 本週如下課程依學校規定, 改於上一週週六 2/23 教授.
第3章: 實值變數與運算式  
第3週
3/08  第3,4章: 實值變數與運算式, 流程控制 
第4週
3/15  第4章: 流程控制, 第5章:陣列  
第5週
3/22  第5章:陣列, 第6章:函式 
第6週
3/29  第6章:函式, 
第7週
4/05  民族掃墓節放假 
第8週
4/12  第7章: 程式規劃與函式導向程式設計
繳交並討論第一次作業  
第9週
4/19  期中考, 範圍至前一週進度
 
第10週
4/26  第7, 8章: 程式規劃與函式導向程式設計, 物件與類別 
第11週
5/03  第8章: 物件與類別 , 開始繳交分組名單及期末專題構想書 
第12週
5/10  第9章: 物件導向程式設計 
第13週
5/17  第10章 至 10.5: 繼承與多型 , 繳交及討論第二次作業  
第14週
5/24  第12章: Unity圖形使用介面程式設計 
第15週
5/31  第10章 10.5節之後: 繼承與多型
繳交並討論第三次作業  
第16週
6/07  端午節放假 
第17週
6/14  第11章: 檔案讀寫與例外處理 
第18週
6/21  期末考 
第19週
6/22~6/28 期間  6/22~6/27期間, 期末專題實作成果解說展演視訊短片上傳, 由同儕依據各組短片評分; 過程在線上完成. 屆時不在台灣的同學,同儕互評成績不受影響.
對其他組的評分表, 專題書面報告及學習心得於6月28日下午2:00前於ceiba網站分開繳交, 任課教師評分.